<?php

declare (strict_types=1);
/**
 * @copyright 深圳市易果网络科技有限公司
 * @version 1.0.0
 * @link https://dayiguo.com
 */

namespace App\Dao;

use App\Model\UserCart;

/**
 * 购物车 DAO
 *
 * @author 谢声强(861167322@qq.com)
 * @package App\Dao
 */
class CartDao
{
    /**
     * 购物车列表
     * @return mixed
     */
    public function get()
    {
        return UserCart::query()
            ->where('user_id', uid())
            ->with('goods:id,title')
            ->with('sku:id,price,picture')
            ->select('id', 'goods_id', 'num', 'joined_price', 'sku_id')
            ->get();
    }

    /**
     * 通过skuID获取库存
     *
     * @param int $sku_id
     * @return mixed
     */
    public function getCartBySkuId(int $sku_id)
    {
        return UserCart::query()->where('sku_id', $sku_id)->where('user_id', uid())->first();
    }

    /**
     * 清空购物车
     *
     * @return int|mixed
     */
    public function clear()
    {
        return UserCart::query()->where('user_id', uid())->delete();
    }

    /**
     * 添加商品到购物车
     *
     * @param array $data
     * @return mixed
     */
    public function create(array $data)
    {
        return UserCart::query()->create($data);
    }

    /**
     * 从购物车中删除
     *
     * @param int $cart_id
     * @return int
     */
    public function delete(int $cart_id)
    {
        return UserCart::query()->where('user_id', uid())->where('id', $cart_id)->delete();
    }

    /**
     * 通过 sku_id 列表删除购物车
     *
     * @param $sku_ids
     * @return int|mixed
     */
    public function deleteBySkuIds($sku_ids)
    {
        return UserCart::query()->where('user_id', uid())->whereIn('id', $sku_ids)->delete();
    }

    /**
     * 通过 ID 列表获取购物车记录
     *
     * @param array $ids
     * @param array $fields
     * @return mixed
     */
    public function getByIds(array $ids, array $fields = ['*'])
    {
        return UserCart::query()->where('user_id', uid())->whereIn('id', $ids)->select($fields)->get();
    }
}